#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
// renew

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // 移除tab页（按下×关闭）
    connect(ui->tabWidget, &QTabWidget::tabCloseRequested, this, [=](int index)
    {
        // 保存将移除的tab页信息
        QWidget* wg = ui->tabWidget->widget(index);
        QString title = ui->tabWidget->tabText(index);
        _widgets.enqueue(wg);
        _names.enqueue(title);
        // 移除tab页
        ui->tabWidget->removeTab(index);
        ui->restoreBtn->setEnabled(true); // 有tab页被删除，复原按钮有效
    });
    // 根据点击输出信息
    connect(ui->tabWidget, &QTabWidget::tabBarClicked, this, [=](int index)
    {
        qDebug() << "标题为“" << ui->tabWidget->tabText(index) << "”的tab页被按下了";
    });

    connect(ui->tabWidget, &QTabWidget::currentChanged, this, [=](int index)
    {
        qDebug() << "当前显示的tab页的标题为: " << ui->tabWidget->tabText(index);
    });

    connect(ui->restoreBtn, &QPushButton::clicked, this, [=]()
    {
        // 将被删除的tab页还原：即添加到窗口
        // 1. 获取窗口对象，窗口标题
        // 2. 添加
        ui->tabWidget->addTab(_widgets.dequeue(), _names.dequeue());

        if(_widgets.empty()) // 当没有删除任何tab页，将复原按钮无效
            ui->restoreBtn->setDisabled(true);
    });
}

MainWindow::~MainWindow()
{
    delete ui;
}

